// Function.apply()
/**
 * 
 * Function.apply()用于改变Function中的this执行，以及调用Function
 * 接收两个参数，第一个是当前作用域的this,剩下的参数是一个数组，数组的元素会传入Function()作为参数
 * 如果第一个参数为null或undefind,则Function中的this默认指向全局对象
 * 
 * */ 

// 自定义applay()
function apply(Fn, obj , args) {

  if(obj === undefined || obj === null) {
    obj = globalThis;
  }

  obj.temp = Fn;

  let result = obj.temp(...args)

  delete obj.temp;
  
  return result
}